package com.foreknow.controller;

import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;

///**
// * 1.什么是会话：它是指客户端与服务器端之间的数据传输（登录、购物车）
// * 2.会话管理：也就是对数据的管理
// * 3.常用的会话技术  Cookie 数据会保存在客户端    Session数据会保存在服务器端
// *
// * 什么是Cookie:这是客户端的技术，程序会把每个用户的数据以Cookie的形式写给用户各自的浏览哭器，当
// * 用户使用浏览器再次访问Web服务器的时候，它会有它各自的数据。
// * 包javax.servlet.http.Cookie
// * Cookie类：主要是用于存储会话数据的
// * 1.可以通过构造器来创建Cookie对象   Cookie(java.lang.String name, java.lang.String value)
// * 2.设置Cookie
// *      setMaxAge(int expiry)设置Cookie的有效时间(是以秒为单位的) 24*60*60
// * 3.发送Cookie到浏览器端保存
// *      addCookie(Cookie cookie)
// * 4.服务器端接收Cookie
// *       返回值类型Cookie[]	request.getCookies()
// *
// * Cookie的原理
// *  1.可以在服务器端创建一个Cookie对象，要把会话的数据存储到会话中
// *
// *  2.服务器端会发送Cookie信息给浏览器，之后会把cookie保存到流利器端
// *
// *  3.浏览器会在下一次访问的时候，会携带cookie的信息（这些信息会包含在http的请求头中）
// *
// *  4.服务器会到浏览器携带cookie的信息
// *
// *  注意：后期如果解决客户端与服务器端的多次请求(解决方案可以使用h5中的要地存储)
// *
// *  setMaxAge(int exp)
// *      1. 正数：表示cookie数据保存浏览器的缓存到硬盘中，数值表示要保存的时间
// *
// *      2. 负数：表示cookie数据会保存在浏览器的内中，如果浏览器关闭，cookie就失效了。
// *
// *      3. 0 表示会删除同名的cookie数据
// *
// *  cookie的数据类型只能保存非中文字符串类型。可以保存多个cookie,一个浏览器可以保存300个cookie
// *  每个站点最多可以存入20个cookie，每个cookie的大小限制为4kb
// *
// *
// *
// */
public class CookieDemo extends HttpServlet {


    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//        Cookie cookie = new Cookie("name","tom123");//创建cookie对象
//        cookie.setMaxAge(1*30*24*60*60);//设置cookie的有效时间
//        resp.addCookie(cookie);
        //获取客户端的Cookie
        PrintWriter out = resp.getWriter();
        Cookie[] cookies = req.getCookies();
        if(cookies!=null){
            for (Cookie c:cookies) {
                String name = c.getName();
                String value = c.getValue();
                out.println(name+"------"+value);
            }
        }else {
            out.println("否则没有接收到cookie的数据");
        }

    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doGet(req,resp);
    }
}